package br.fatec.ads.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import br.fatec.ads.dao.PerguntaDAO;
import br.fatec.ads.dao.ProcessoSeletivoDAO;
import br.fatec.ads.dao.VagaDAO;
import br.fatec.ads.dao.VagaPerguntaDAO;
import br.fatec.ads.exception.DataBaseException;
import br.fatec.ads.exception.PerguntaException;
import br.fatec.ads.exception.ProcessoSeletivoException;
import br.fatec.ads.exception.VagaException;
import br.fatec.ads.exception.VagaPerguntaException;
import br.fatec.ads.model.Area;
import br.fatec.ads.model.Pergunta;
import br.fatec.ads.model.ProcessoSeletivo;
import br.fatec.ads.model.Vaga;
import br.fatec.ads.model.VagaPergunta;

public class VagaPerguntaIncluir extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    public VagaPerguntaIncluir() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try {
			List listaProcessoSeletivo = new ArrayList();
			List listaVaga = new ArrayList();
			List listaPergunta = new ArrayList();
			HttpSession session = request.getSession(false);
			
			session.removeAttribute("processoSeletivoPesqIncluir");
			session.removeAttribute("vagaPesqIncluir");
			session.removeAttribute("perguntaPesqIncluir");
			session.removeAttribute("listaVagaIncluir");
			session.removeAttribute("listaPerguntaIncluir");
			
			ProcessoSeletivoDAO processoSeletivoDAO = new ProcessoSeletivoDAO();
			PerguntaDAO perguntaDAO = new PerguntaDAO();
			
			listaProcessoSeletivo = processoSeletivoDAO.listarProcessoSeletivo(null, null);
			listaPergunta = perguntaDAO.listarPergunta(new Pergunta());
			
			session.setAttribute("listaComboProcessoSeletivoIncluir", listaProcessoSeletivo);
			session.setAttribute("listaComboVagaIncluir", listaVaga);
			session.setAttribute("listaComboPerguntaIncluir", listaPergunta);
			session.setAttribute("disableVagaIncluir", "disabled");
			session.setAttribute("disablePerguntaIncluir", "disabled");
			
			request.getRequestDispatcher("cadvagapergunta_i.jsp").forward(request, response);
		} catch (ProcessoSeletivoException e) {
			e.printStackTrace();
		} catch (PerguntaException e) {
			e.printStackTrace();
		} catch (DataBaseException e) {
			e.printStackTrace();
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try{
			HttpSession session = request.getSession(false);
			ProcessoSeletivo processoSeletivo = new ProcessoSeletivo();
			VagaPergunta vagaPergunta = new VagaPergunta();
			
			processoSeletivo.setIdProcessoSeletivo(request.getParameter("cmbProcessoSeletivo").equals("") ? 0
					: Integer.parseInt(request.getParameter("cmbProcessoSeletivo")));
			
			if(request.getParameter("preencheCombo") != null && request.getParameter("preencheCombo").equals("Vaga")){
				if(processoSeletivo.getIdProcessoSeletivo() == 0){
					session.setAttribute("listaComboVagaIncluir", new ArrayList());
					session.setAttribute("listaComboPerguntaIncluir", new ArrayList());
					session.setAttribute("disableVagaIncluir", "disabled");
					session.setAttribute("disablePerguntaIncluir", "disabled");
					session.setAttribute("processoSeletivoPesqIncluir", new ProcessoSeletivo());
					session.setAttribute("vagaPesqIncluir", new Vaga());
				} else{
					List listaVaga = new ArrayList();
					
					Vaga vaga = new Vaga();
					
					VagaDAO vagaDAO = new VagaDAO();
					ProcessoSeletivoDAO processoSeletivoDAO = new ProcessoSeletivoDAO();
					PerguntaDAO perguntaDAO = new PerguntaDAO();
					
					processoSeletivo = processoSeletivoDAO.getProcessoSeletivo(processoSeletivo.getIdProcessoSeletivo());
					vaga.setProcessoSeletivo(processoSeletivo);
					vaga.setArea(new Area());
					
					listaVaga = vagaDAO.listarVaga(vaga);
					
					session.setAttribute("listaComboVagaIncluir", listaVaga);
					session.setAttribute("disableVagaIncluir", "");
					session.setAttribute("processoSeletivoPesqIncluir", processoSeletivo);
				}
			} else if(request.getParameter("preencheCombo") != null && request.getParameter("preencheCombo").equals("Pergunta")){
				Vaga vaga = new Vaga();
				
				vaga.setIdVaga(request.getParameter("cmbVaga").equals("") ? 0
						: Integer.parseInt(request.getParameter("cmbVaga")));
				
				if(vaga.getIdVaga() == 0){
					session.setAttribute("listaComboPerguntaIncluir", new ArrayList());
					session.setAttribute("disablePerguntaIncluir", "disabled");
					session.setAttribute("vagaPesqIncluir", new Vaga());
				} else{
					List listaPergunta = new ArrayList();
					
					VagaDAO vagaDAO = new VagaDAO();
					PerguntaDAO perguntaDAO = new PerguntaDAO();
					
					vaga = vagaDAO.getVaga(vaga.getIdVaga());
					
					listaPergunta = perguntaDAO.listarPerguntaPorArea(vaga.getArea().getIdArea());
					
					session.setAttribute("vagaPesqIncluir", vaga);
					session.setAttribute("listaComboPerguntaIncluir", listaPergunta);
					session.setAttribute("disablePerguntaIncluir", "");
				}
			} else{
				Vaga vaga = new Vaga();
				Pergunta pergunta = new Pergunta();
				
				vaga.setIdVaga(request.getParameter("cmbVaga") == null ? 0
						: request.getParameter("cmbVaga").equals("") ? 0
								: Integer.parseInt(request.getParameter("cmbVaga")));
				
				pergunta.setIdPergunta(request.getParameter("cmbPergunta").equals("") ? 0
						: Integer.parseInt(request.getParameter("cmbPergunta")));
				
				VagaPerguntaDAO vagaPerguntaDAO = new VagaPerguntaDAO();
				
				vagaPergunta.setVaga(vaga);
				vagaPergunta.setPergunta(pergunta);
				vagaPergunta.setUsuario(session.getAttribute("usuarioDesc").toString());
				
				vagaPerguntaDAO.incluirVagaPergunta(vagaPergunta);
				
				request.getRequestDispatcher("VagaPerguntaPesquisar?acao=SUCESSO_INCLUIR").forward(request, response);
				
				return;
			}
			
			request.getRequestDispatcher("cadvagapergunta_i.jsp").forward(request, response);
		} catch(VagaException e){
			e.printStackTrace();
			request.getRequestDispatcher("VagaPerguntaPesquisar?acao=ERRO_INCLUIR").forward(request, response);
		} catch(ProcessoSeletivoException e){
			e.printStackTrace();
			request.getRequestDispatcher("VagaPerguntaPesquisar?acao=ERRO_INCLUIR").forward(request, response);
		} catch(PerguntaException e){
			e.printStackTrace();
			request.getRequestDispatcher("VagaPerguntaPesquisar?acao=ERRO_INCLUIR").forward(request, response);
		} catch(VagaPerguntaException e){
			e.printStackTrace();
			request.getRequestDispatcher("VagaPerguntaPesquisar?acao=ERRO_INCLUIR").forward(request, response);
		} catch(DataBaseException e){
			e.printStackTrace();
			request.getRequestDispatcher("VagaPerguntaPesquisar?acao=ERRO_INCLUIR").forward(request, response);
		}
	}
}